package org.htw.osgi.renderservice.essentials;

import javax.servlet.Servlet;

/**
 * <p>Interface für ein Service Framework, welches das Interceptor-Muster implementiert.
 * Ein Framework integriert einen Dispatcher bei welchen die Interceptoren registriert
 * werden. Das Framework delegiert bestimmte Ereignisse (z.B. einen eingegangen HTTP-Request) and
 * den Dispatcher weiter, welcher wiederum seine registrierten Interceptoren
 * aufruft.</p>
 * 
 * <p>Dieses Interface ermöglicht es Interceptoren sich bei der Interface
 * Implementierung zu registrieren bzw zu deregistrieren und ermöglicht
 * es, den Service über Probleme während der Verarbeitung zu benachrichtigen.</p>
 * 
 * @author  Benjamin Friedrich (<a href="mailto:benjamin_friedrich@gmx.de">mailto:benjamin_friedrich@gmx.de</a>)
 * @version 1.0  Juni 2009
 */
public interface IServiceFramework
extends          Servlet
{
	/**
	 * Registriert Interceptor im Framework.
	 * 
	 * @param interceptor zu registrierender Interceptor
	 */
	abstract public void registerInterceptor(IInterceptor interceptor);
	
	/**
	 * Meldet Interceptor vom Framework ab.
	 * 
	 * @param interceptor abzumeldender Interceptor
	 */
	abstract public void unregisterInterceptor(IInterceptor interceptor);
	
	/**
	 * Diese Methode wird von Interceptoren genutzt um dem Framework
	 * einen Fehler mitzuteilen. Die Verarbeitung durch die Interceptoren
	 * sollte danach gestoppt werden und anfragenden Client eine Fehlernachricht
	 * geschickt werden.
	 * 
	 * @param message Fehlermeldung
	 */
	abstract public void signalError(String message);
}